- web6047 - (2021/09/10(金) 現在、システム調整中のため、一部の表示がおかしいかもしれません)


there is no canvas.







arrow key is move. z key is attack. (This is beta version.)

チェックすると、キー入力をゲームが占有(Check it, then your Keyboard is reserved for playing this game.)

homepage6047 2018年 11月

プログラミングやRPG(作るほう)が好きな人の日記

2018/11/28(水)

最近ちょっと、ホームページの更新がペースダウンしているのは、最近は夜10時に寝るようにしているからです。いろいろ良いことがあるなぁと思っています。

ずっとこのままだと良いなと思いますが…。


2018/11/25(日) 3連休 最終日

今月の冒頭プログラムは

コナミのシューティングゲーム「グラディウス」のマネです…

というより「横スクロールシューティングゲームを作ろう!」と思って始めたら、発想はグラディウスしかありませんでした。

「まだ遊べないです☆彡」と書いてあるとおり、まだ途中のもので、特別何か紹介するようなプログラムではありません。

しいていえば…


1つのページに3つのJavaScriptが同居

冒頭のJavaScriptに加え、下のほうの2つのJavaScriptと合わせて3つのJavaScriptが1つのページに同居しています。

同居するための SeamLess.js というものを自作して、今回冒頭プログラムを作る際に使ってみました。


背景画像の作り方

背景画像の作成には、とても便利な変わった方法を取っています。

fig.
▲Excelの作図機能を利用

いつものように、Excelを使って背景画像を作っていますが…。



fig.
▲適当に編集し、ボタンを押す

左図のように編集して、Excelのシート上の赤丸で示したこういうボタン

を押すと…



fig.
▲Excelファイルの場所にPNG画像

このように PNG 画像ファイルとして出力してくれます。

冒頭の JavaScript はこの画像ファイルを 直接読んでいるので…



fig.
▲冒頭のJavaScriptの画面を変更した

インターネットブラウザの更新ボタンを押すと、図のようにJavaScriptの画面が更新されます。

Excelで編集する→ボタンを押す→ブラウザに戻って更新ボタンを押して確認

「ちょっとこのカドをへこませたい」と思ったらこの手順ですぐに直せるので直感的に開発できます。


以上の紹介だけで終わると、ただの自慢になってしまうと思うので、ボタンを押して画像出力していたExcelのVBAプログラムを下記で掲載しておきます。

Excelが必要ですが、よかったら使ってみてください。

Excelに画像出力ボタンを作ろう

Excel2010で動作確認しているプログラムです。ほかのバージョンのExcelでは試していません。

私はこのプログラムを、ホームページの装飾画像を作ったり、私がよくプログラムしているサイドビューキャラというプログラムの画像を作るときによく使っています。

私が日ごろから使っている分においては、エラーしたり意図したとおりに画像ができなかったりはしていませんが、もしかしたら環境によってはうまくいかないかもしれません。(下記掲載のプログラムリストを見ると不具合を何とか避けようとしている様子が読み取れるかもしれません)

またこのExcelプログラムを動かすためには、以下のExcelの設定が必要になります。(※2010以外でも同じ設定はあると思います)

特にセキュリティの設定を変えるところは注意してください。あなたの家庭、職場で禁止しているかもしれません。(その場合はあきらめてもらうしかないかな??)


では始めましょう。

手順1 Windowsで右クリック>新規作成>Microsoft Excel ワークシート

このときファイル名は変更しないで、新規 Microsoft Excel ワークシート.xlsx としてください。

また、新規 Microsoft Excel ワークシート (2).xlsx のようなファイル名も以降の手順どおりに進めると つまづくので新しいフォルダを作るなどして 新規 Microsoft Excel ワークシート.xlsx としてください。

手順2 ファイルを開いたら、すぐに、ファイル タブ>名前を付けて保存します。ファイル保存の画面で、画面下のほうの ファイルの種類(T): から上から2番目の Excel マクロ有効ブック (*.xlsm)を選び、保存 ボタンを押します。

すると、編集中のファイルは、新規 Microsoft Excel マクロ有効ワークシート.xlsm に代わっています。

手順3 開発 タブ>(横の並びの中央付近の)挿入>"フォームコントロール"の(一番左上の)"ボタン(フォーム コントロール)"アイコンをクリックし、シート上のボタンを配置したいところをドラッグします。

すると、マクロの登録 画面が現れます。

手順4 右上の 新規作成 ボタンを押します。

すると、Excel VBA の開発画面が現れます。


ここで、プログラミングをしたことがない人は不安になるかもしれません。

無理にはすすめませんが、ここで行う操作はExcelの何かを壊してしまうものではなく、あくまでもここで作成したExcelファイルの中だけで行っていることなので、そんなに心配はないと思います。

ただ、世の中には悪い人がいて、いろいろ案内してお金を振り込む操作をさせたり、何かのパスワードを開示させようとしたり、変なプログラムをインストールさせようとしたりと、いろいろ悪いことをやるわけです。皆さんにとっては私は文字通り見ず知らずの他人ですから、この私の案内が大丈夫だという保証はありません。

以下のプログラムが大丈夫なのかどうかわからない人は、あえて便利な機能を導入したりせず、あきらめるというのも得策です。

プログラムがわかる人は、内容をある程度見て、おかしなことをやっていないと判断できる場合だけ使用してください。


手順5 以下のコードをコピーします。少し長いのでうまくコピーしてください。

Sub 保存(nameGetFrom As String) If nameGetFrom = "selection" Then '--- 選択された図形が対象の場合 'check If TypeName(Selection) = "Range" Then MsgBox "保存 ""selection""" & vbNewLine & "何も選択されていません." End End If theName = Selection.Name Else '--- シート上のすべての図形が対象の場合 selectAllShape If TypeName(Selection) = "Range" Then MsgBox "保存 ""sheet""" & vbNewLine & "シート上に図がありません." End End If theName = ActiveSheet.Name End If Selection.Copy Application.ScreenUpdating = False '描画停止 zoomBak = ActiveWindow.Zoom '画像のアスペクト比がずれるのを防止 ActiveWindow.Zoom = 100 Application.Wait [Now()] + 1000 / 86400000 '1秒停止 ミリ秒単位指定 '図として貼り付け、それを切り取り On Error GoTo retry retry: ActiveSheet.Pictures.Paste.Select w = Selection.Width h = Selection.Height Selection.Cut 'チャート作成 x = 10 y = 10 Set theChart = ActiveSheet.ChartObjects.Add(x, y, w, h).Chart theChart.ChartArea.Interior.ColorIndex = xlColorIndexNone '背景を透明にする theChart.ChartArea.Format.Line.Visible = False '枠線を消す Application.Wait [Now()] + 500 / 86400000 '1秒停止 ミリ秒単位指定 'チャートへ貼り付け theChart.Paste 'チャートのExportメソッドを実行 theChart.Export Filename:=ThisWorkbook.Path & "\" & theName & ".png", filtername:="png" Application.Wait [Now()] + 1000 / 86400000 '1秒停止 ミリ秒単位指定 theChart.Parent.Delete ActiveWindow.Zoom = zoomBak Application.ScreenUpdating = True '描画再開 End Sub Sub selectAllShape() '図形をすべて選択 For Each theShape In ActiveSheet.Shapes 'check. 図形ではなさそうなモノは除外 Select Case theShape.Type: Case msoFormControl, msoOLEControlObject, msoPlaceholder, msoScriptAnchor GoTo continue End Select theShape.Select False '追加選択 continue: Next End Sub

修正履歴

2018/12/23 修正しました。

2018/12/1 いくつか修正しました。よりよくなっています。


手順6 VBAの画面に戻り、上部に並んでいるメニューの、編集 メニュー>すべて選択 を選びます。続いて、同メニュー>貼り付け を選びます。

すると、コピーしたプログラムコードが貼り付けされます。

手順7 VBA画面の右上の 閉じる × ボタンを押します。

すると、Excelの画面に戻り、ボタンが配置されていると思います。

手順8 そのボタンを右クリック。マクロの登録(N)... を選びます。再び マクロの登録 画面が表示されます。

手順9 下記文字列をコピーします。

'新規 Microsoft Excel ワークシート.xlsm'!'保存 "sheet"'

手順10 マクロの登録 画面の一番上の マクロ名(M): のすぐ下の入力欄で '新規 Microsoft Excel ワークシート.xlsm'!ボタン3_Click などと書かれた部分が黒く反転(すべて選択状態)されています。これを右クリック、貼り付け を選びます。

OK ボタンを押して完成です。


お試し手順1 ボタンと同じシートに、適当に図を配置してください。

お試し手順2 作成したボタンを押してください。

うまくいくと、少しのあいだボタンが押された状態のままマウスカーソルが砂時計になり、そして一瞬何かがちらつくと思います。

Excelファイルが置かれているフォルダを見ると、Sheet1.png といった名前の画像ファイルが作成されていると思います。開くと挿入した図形だと思います。


これはシート上のすべての図形を1つの画像にするので、1つのシートに1つの絵、と考えて使ってください。

別のシートでも同機能を利用したい場合は、ボタンを右クリックしコピー、そのシートへ貼り付けすれば、そのシートで使えます。

別のファイルでも使いたい場合は、このファイルをひな型(どこかに保管しておいて毎回ファイルコピーして使う)として使うと良いと思います。


あと、「シート上の選択した画像だけを出力したい」という場合は新しくボタンを作って、マクロ登録の画面で下記文字列を貼り付けしてください。(その際プログラムリストをもう一度コピーしたり貼り付けたりする手順は不要です)

'新規 Microsoft Excel ワークシート.xlsm'!'保存 "selection"'


2018/11/20(火)

プロジェクトEGGで「SORCERIAN COMPLETE Windows10対応版」(\9,801円税別)というレトロゲームを購入しました。(通販で注文しました)

1987年にゲームソフト会社の日本ファルコムが PC-8801 というパソコン向けに発売したアクションRPGです。

「SORCERIAN」とは「ソーサリアン」と読みます。魔法、魔術を意味する英単語 sorcery に人を意味する接尾辞 -an を付けてSORCERIANです。ゲーム中、武器に魔法を宿らせて戦うからそう名付けられたんでしょう。

ゲームとしては正直 面白くない(戦いは戦略性が低く、ストーリーはフラグを立てるためにマップ中を奔走(ほんそう)する印象が強い)のですが、イラストレーション(小林誠氏や米田仁士氏)やBGM(古代裕三氏ほか)、剣と魔法の世界といった「世界観」が好きなんです。

その世界観の良さはRPGを作ろうとしている自分にとってプラスになるだろうと思って(高かったですが)購入することにしました。


同様の意味合いで購入したPC-9801版「Ultima」やAppleII版「Wizardry」はRPGの本当の良さを直に感じることができて、購入してよかったと思っています。最近のRPGはやっても面倒だったり つまらないことが多いんですが、たとえば「Ultima」はそれらと比較にならないぐらい面白い。お城に捕らわれた他国の姫を助け出すためにあれこれ戦略を練るなんて、ほかのRPGではあまりやれないことだと思う。


ソーサリアンもそういう良い買い物だと良いんだけど。


2018/11/3(土)

JavaScript Window Toolkit(そんなものはない=3)

例はあまり面白くないんですが、JavaScript用に ボタンやスライダなどのコントロール機能を作りました。ホームページを形作る言語である「HTML」のほうに同様のものがすでにあるんですが、CANVAS(ホームページの中で自由にプログラムできるグラフィック領域)の中でちょっとやりたいんだ、というときに使います。

There is no canvas.

スライダは「スピード調整」になっていて、ボタンは「色変更」になっています。それだけなので面白くないですかね。

(知っている人は JavaScript Window Toolkit と Abstruct Window Toolkit とが発音が似ていると思うかもしれません)

1つのページに複数のJavaScriptが同居

また、今までは1つの日記ページの中で、JavaScriptを日ごとに紹介するときは、それぞれ別ページへのリンクにする必要がありましたが、それを1つのページに直に配置できるようになっています。(難しく言うと、グローバル変数やイベントの競合がありません)

上記でJavaScriptのCANVASを動かしていたのに、下記のように もう1つべつのJavaScriptのCANVASを動かしています。これは普通はできないことです。

There is no canvas.

新しいページを開くわずらわしさがなくなり、意識せず、日記ページと一体的に利用できます。

JavaScriptにちょっと詳しい方はたぶん、複数のJavaScriptをそれぞれ1つのオブジェクトにすれば、可能かもなぁ、と思うかもしれませんが、そのとおりで、そうやっています。


問題が1つあって、「1つのプログラムを1つのオブジェクトにする」という、一風かわったプログラムになってしまうので、プログラムの初心者の方への参考としてのプログラムリスト掲示ができません。

初心者の方には、なんの変哲(偏った考え方)もない、当たり前のプログラムリストが必要だと思います。